package com.smartreader.enums;
/**
 * 失败结果码枚举类
 * 定义系统中可能出现的失败情况及其对应的错误码和错误信息
 */
public enum FailResultCode {
    /**
     * 系统内部错误
     */
    SYSTEM_ERROR(500, "系统内部错误，请稍后重试"),

    /**
     * 认证失败
     */
    AUTHENTICATION_FAIL(401, "认证失败，用户名或密码错误"),

    /**
     * Token无效或过期
     */
    TOKEN_INVALID(401, "Token无效或已过期，请重新登录"),

    /**
     * 权限不足
     */
    PERMISSION_DENIED(403, "权限不足，无法访问该资源"),

    /**
     * 资源不存在
     */
    RESOURCE_NOT_FOUND(404, "请求的资源不存在"),

    /**
     * 请求方法不支持
     */
    METHOD_NOT_ALLOWED(405, "请求方法不支持"),

    /**
     * 参数错误
     */
    PARAMETER_ERROR(400, "请求参数错误"),

    /**
     * 业务逻辑错误
     */
    BUSINESS_ERROR(400, "业务逻辑错误"),

    /**
     * 数据已存在
     */
    DATA_EXISTS(400, "数据已存在，请勿重复创建"),

    /**
     * 数据库操作失败
     */
    DATABASE_ERROR(500, "数据库操作失败"),

    /**
     * 文件上传失败
     */
    FILE_UPLOAD_FAIL(500, "文件上传失败"),

    /**
     * 第三方服务调用失败
     */
    THIRD_PARTY_SERVICE_ERROR(500, "第三方服务调用失败");

    /**
     * 错误码
     */
    private final Integer code;

    /**
     * 错误信息
     */
    private final String msg;

    /**
     * 构造函数
     *
     * @param code 错误码
     * @param msg  错误信息
     */
    FailResultCode(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    /**
     * 获取错误码
     *
     * @return 错误码
     */
    public Integer getCode() {
        return code;
    }

    /**
     * 获取错误信息
     *
     * @return 错误信息
     */
    public String getMsg() {
        return msg;
    }
}
